package club.kingyin.core;

/**
 * 用在实例化前后的增强型功能
 * @author : kingyins
 * @version : 1.0
 * @program : my-spring
 * @description : bean 生命周期中重要的接口
 * @create : 2021年07月16日 14:58
 **/
public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor{

    /**
     * bean实例化前置增强器，默认什么都不处理
     * @param mbd 原始BeanDefinition
     * @param beanName bean类名
     * @return 增强后BeanDefinition
     */
    default BeanDefinition postProcessorBeforeInstantiation(BeanDefinition mbd, String beanName) {
        return mbd;
    }

    /**
     * bean实例化后置增强器，默认什么都不处理
     * @param bean 原始Bean
     * @param beanName bean类名
     * @return 增强后Bean
     */
    default Object postProcessorAfterInstantiation(Object bean, String beanName) {
        return bean;
    }
}
